package com.maiko.usercenter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration;

import java.time.Duration;

/**
 * Redis 会话配置类，用于将 HTTP 会话数据（session）存储到 Redis 中。
 * 通过 EnableRedisHttpSession 注解启用 Spring Session 与 Redis 的集成。
 * <p>
 * 配置了会话超时时间为 30 分钟（1800 秒），即用户在 30 分钟内未进行任何操作时，Redis 会自动清除该会话。
 * </p>
 *
 * @author: Maiko7
 * @create: 2025-07-13 12:00
 */
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {

    /**
     * 配置会话超时时间。
     * <p>
     * 设置会话的最大不活动时间为 1800 秒（30 分钟）。如果用户在此时间内没有任何操作，
     * 会话将被视为过期，Redis 会自动删除该会话数据。
     * </p>
     *
     * @return 配置好的 {@link RedisHttpSessionConfiguration} 实例
     */
    @Bean
    public RedisHttpSessionConfiguration  sessionConfig() {
//        RedisHttpSessionConfiguration config = new RedisHttpSessionConfiguration();
        // 这个方法过时了
//        config.setMaxInactiveIntervalInSeconds(1800); // 设置会话超时时间为 30 分钟
        RedisHttpSessionConfiguration config = new RedisHttpSessionConfiguration();
        config.setMaxInactiveInterval(Duration.ofMinutes(30)); // 设置会话超时时间为 30 分钟
        return config;
    }
}

